
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently

#pragma once

#ifndef _SECURE_ATL
#define _SECURE_ATL 1
#endif

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // Exclude rarely-used stuff from Windows headers
#endif

#include "targetver.h"

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // some CString constructors will be explicit

// turns off MFC's hiding of some common and often safely ignored warning messages
#define _AFX_ALL_WARNINGS

#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions

#include <afxole.h>         // MFC OLE classes
#include <afxodlgs.h>       // MFC OLE dialog classes

#include <afxdisp.h>        // MFC Automation classes
#include <atlbase.h>
#include <atlcom.h>

using namespace ATL;

class CXortStudioModule : public CAtlModuleT< CXortStudioModule >
{
public:
    CXortStudioModule()
    {
        m_hInstance = NULL;
    }

    //DECLARE_LIBID(__uuidof())

    inline HINSTANCE GetResourceInstance()
    {
        return m_hInstance;
    }

    inline void SetResourceInstance(HINSTANCE hInstance)
    {
        m_hInstance = hInstance;
    }

private:
    HINSTANCE m_hInstance;
};

extern CXortStudioModule _AtlModule;

#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>           // MFC support for Internet Explorer 4 Common Controls
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>             // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT

#include <afxcontrolbars.h>     // MFC support for ribbons and control bars
#include <afxrich.h>            // MFC rich edit classes

#include "XStudio.h"
#include "resource.h"
#include "xort.h"
#include "xruntime.h"
#include "xbuildin.h"
#include "xcode.h"
#include "xobject.h"

#define WM_APPEND_STRING (WM_USER+1)
#define WM_PROGRAM_ENDED (WM_USER+2)
#define WM_SWITCH_TAB    (WM_USER+3)

#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif

int ParseCmdLine( CHAR *cmdstart , int *piArgc, char ***ppArgv );

enum XVMState
{
    XVM_Idle    = 0,
    XVM_Executing,
    XVM_DoSingleStep,
    XVM_AtBreakpoint,
    XVM_CauseBreak,
    XVM_LazyExecution,
    XVM_Terminating,
};

enum XVMStepKind
{
    XVM_Step_Into = 0,
    XVM_Step_Over,
};
